﻿'
' DotNetNuke® - http://www.dotnetnuke.com
' Copyright (c) 2002-2010
' by DotNetNuke Corporation
'
' Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated 
' documentation files (the "Software"), to deal in the Software without restriction, including without limitation 
' the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and 
' to permit persons to whom the Software is furnished to do so, subject to the following conditions:
'
' The above copyright notice and this permission notice shall be included in all copies or substantial portions 
' of the Software.
'
' THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED 
' TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL 
' THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF 
' CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER 
' DEALINGS IN THE SOFTWARE.
'

Imports DotNetNuke
Imports System.Web.UI

Namespace DotNetNuke.Modules.Chat

End Namespace

''' -----------------------------------------------------------------------------
''' <summary>
''' The Settings class manages Module Settings
''' </summary>
''' <remarks>
''' </remarks>
''' <history>
''' </history>
''' -----------------------------------------------------------------------------
Partial Class UserListSettings
    Inherits Entities.Modules.ModuleSettingsBase

#Region "Base Method Implementations"

    ''' -----------------------------------------------------------------------------
    ''' <summary>
    ''' LoadSettings loads the settings from the Database and displays them
    ''' </summary>
    ''' <remarks>
    ''' </remarks>
    ''' <history>
    ''' </history>
    ''' -----------------------------------------------------------------------------
    Public Overrides Sub LoadSettings()
        Try
            If (Page.IsPostBack = False) Then
                txtChatWindowModuleID.Text = GetSetting(Of String)("dnnChatUserList_ChatWindowModuleID", "0")
                txtPollingInterval.Text = GetSetting(Of String)("dnnChatUserList_PollingInterval", "2000")

                chkJoined.Checked = GetSetting(Of Boolean)("dnnChatUserList_ShowJoinedColumn", False)
                chkLastMessage.Checked = GetSetting(Of Boolean)("dnnChatUserList_ShowLastMessageColumn", False)
                chkPolling.Checked = GetSetting(Of Boolean)("dnnChatUserList_ShowPollingColumn", False)

            End If
        Catch exc As Exception           'Module failed to load
            ProcessModuleLoadException(Me, exc)
        End Try
    End Sub

    ''' -----------------------------------------------------------------------------
    ''' <summary>
    ''' UpdateSettings saves the modified settings to the Database
    ''' </summary>
    ''' <remarks>
    ''' </remarks>
    ''' <history>
    ''' </history>
    ''' -----------------------------------------------------------------------------
    Public Overrides Sub UpdateSettings()
        Try
            If Page.IsValid Then

                ' Non-SuperUsers can change TabModuleSettings (display settings)
                Dim objModuleController As New Entities.Modules.ModuleController

                objModuleController.UpdateModuleSetting(ModuleId, "dnnChatUserList_ChatWindowModuleID", txtChatWindowModuleID.Text)
                objModuleController.UpdateModuleSetting(ModuleId, "dnnChatUserList_PollingInterval", txtPollingInterval.Text)

                objModuleController.UpdateModuleSetting(ModuleId, "dnnChatUserList_ShowJoinedColumn", chkJoined.Checked.ToString)
                objModuleController.UpdateModuleSetting(ModuleId, "dnnChatUserList_ShowLastMessageColumn", chkLastMessage.Checked.ToString)
                objModuleController.UpdateModuleSetting(ModuleId, "dnnChatUserList_ShowPollingColumn", chkPolling.Checked.ToString)


                ' refresh cache
                Entities.Modules.ModuleController.SynchronizeModule(ModuleId)
            End If
        Catch exc As Exception           'Module failed to load
            ProcessModuleLoadException(Me, exc)
        End Try
    End Sub

#End Region

    Protected Function GetSetting(Of TSetting)(ByVal strSetting As String, ByVal defaultValue As TSetting) As TSetting
        Dim obj As Object = Me.Settings.Item(strSetting)
        If obj Is Nothing Then
            Return defaultValue
        Else
            Return CType(Convert.ChangeType(obj, GetType(TSetting)), TSetting)
        End If
    End Function
End Class

